Consider including runnable name in crash reports
Categories
(Toolkit :: Crash Reporting, enhancement, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox74 | --- | fixed |
People
(Reporter: nika, Assigned: nika)
References
Details
Attachments
(2 files, 1 obsolete file)
47 bytes,
text/x-phabricator-request
|
Details | Review | |
2.70 KB,
text/plain
|
chutten
:
data-review+
|
Details |
The name of the currently executing runnable on the main thread in each process is recorded in a static array, and it may be useful to include that information in generated crash reports.
Due to this information not being present in non-nightly builds (see https://searchfox.org/mozilla-central/rev/be7d1f2d52dd9474ca2df145190a817614c924e4/xpcom/threads/nsThreadUtils.h#444-449), this may not be a super useful probe to include in general, but writing a patch to add it was fairly straightforward.
Assignee | ||
Comment 1•5 years ago
|
||
Assignee | ||
Comment 2•5 years ago
|
||
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 3•5 years ago
|
||
Holding off on formally requesting data-review until we determine whether it's worthwhile to collect this information.
Comment 4•5 years ago
|
||
Nathan, as somebody who probably looks at a lot of crashes with runnables in them, do you have any sense if this might be useful? My hope was that this information would help in those situations where things get really inlined.
I guess we could also look at some crash reports with runnables in the stack somewhere.
Assignee | ||
Comment 5•5 years ago
|
||
Updated data-review form to reflect including this information in the "crash" ping.
See also: https://phabricator.services.mozilla.com/D59364?id=215794#inline-361681
![]() |
||
Comment 6•5 years ago
|
||
(In reply to Andrew McCreight [:mccr8] from comment #4)
Nathan, as somebody who probably looks at a lot of crashes with runnables in them, do you have any sense if this might be useful? My hope was that this information would help in those situations where things get really inlined.
I guess we could also look at some crash reports with runnables in the stack somewhere.
My sense is that things can/will get inlined into the Run()
method of the runnable on the stack, but Run()
won't get inlined due to being a virtual method, so we should always be able to see Run()
on the stack, shouldn't we?
That being said, there are two concerns that I think override that:
- Sometimes we get absolute garbage for (part/all of the) stacks, and having information off to the side could help clarify things.
- Sometimes many different runnables get their
Run()
method merged through code folding, and so theRun()
you see in the stack is very much not what you would expect to see. Having the runnable name be available could help clarify things.
So I think we should go ahead and add this. Bonus points if some justification along those lines is added to the commit message.
Comment 7•5 years ago
|
||
Comment 8•5 years ago
|
||
Comment 9•5 years ago
|
||
Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=285652015&repo=autoland
Backout link: https://hg.mozilla.org/integration/autoland/rev/a2e37e6c3ef6f40e27476400eec9d46fc65b0d89
[task 2020-01-20T17:00:11.512Z] 17:00:11 INFO - /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang++ -isysroot /builds/worker/workspace/build/src/MacOSX10.11.sdk -std=gnu++17 --target=x86_64-apple-darwin -o Unified_cpp_crashreporter0.o -c -fvisibility=hidden -fvisibility-inlines-hidden -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -ftrivial-auto-var-init=pattern -DDEBUG=1 -DOS_POSIX=1 -DOS_MACOSX=1 -DUNICODE -D_UNICODE -DNO_STABS_SUPPORT -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/builds/worker/workspace/build/src/toolkit/crashreporter -I/builds/worker/workspace/build/src/obj-firefox/toolkit/crashreporter -I/builds/worker/workspace/build/src/obj-firefox/ipc/ipdl/_ipdlheaders -I/builds/worker/workspace/build/src/ipc/chromium/src -I/builds/worker/workspace/build/src/ipc/glue -I/builds/worker/workspace/build/src/toolkit/crashreporter/google-breakpad/src -I/builds/worker/workspace/build/src/toolkit/crashreporter/breakpad-client -I/builds/worker/workspace/build/src/toolkit/crashreporter/google-breakpad/src -I/builds/worker/workspace/build/src/obj-firefox/dist/include -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nspr -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nss -fPIC -DMOZILLA_CLIENT -include /builds/worker/workspace/build/src/obj-firefox/mozilla-config.h -Qunused-arguments -Qunused-arguments -Wall -Wbitfield-enum-conversion -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wwrite-strings -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wc++2a-compat -Wcomma -Wimplicit-fallthrough -Werror=non-literal-null-conversion -Wstring-conversion -Wtautological-overlap-compare -Wtautological-unsigned-enum-zero-compare -Wtautological-unsigned-zero-compare -Wno-error=tautological-type-limit-compare -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=backend-plugin -Wno-error=return-std-move -Wno-error=atomic-alignment -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-unknown-warning-option -Wno-return-type-c-linkage -fno-sized-deallocation -fno-aligned-new -fcrash-diagnostics-dir=/builds/worker/artifacts -fno-exceptions -fno-strict-aliasing -stdlib=libc++ -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -Xclang -load -Xclang /builds/worker/workspace/build/src/obj-firefox/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O3 -fno-omit-frame-pointer -funwind-tables -Werror -Wno-unused-local-typedefs -Wno-shadow -Wno-deprecated-declarations -Wno-bool-compare -Wno-unused-but-set-variable -Wno-c++11-narrowing -Wno-implicit-fallthrough -Wno-shadow -MD -MP -MF .deps/Unified_cpp_crashreporter0.o.pp Unified_cpp_crashreporter0.cpp
[task 2020-01-20T17:00:11.512Z] 17:00:11 INFO - In file included from Unified_cpp_crashreporter0.cpp:20:
[task 2020-01-20T17:00:11.512Z] 17:00:11 ERROR - /builds/worker/workspace/build/src/toolkit/crashreporter/nsExceptionHandler.cpp:1294:13: error: cannot initialize a variable of type 'void *' with an rvalue of type 'const void '
[task 2020-01-20T17:00:11.512Z] 17:00:11 INFO - if (void end = my_memchr(buf, '\0', len)) {
[task 2020-01-20T17:00:11.512Z] 17:00:11 INFO - ^ ~~~~~~~~~~~~~~~~~~~~~~~~~
[task 2020-01-20T17:00:11.512Z] 17:00:11 INFO - 1 error generated.
[task 2020-01-20T17:00:11.512Z] 17:00:11 INFO - /builds/worker/workspace/build/src/config/rules.mk:744: recipe for target 'Unified_cpp_crashreporter0.o' failed
[task 2020-01-20T17:00:11.512Z] 17:00:11 ERROR - make[4]: *** [Unified_cpp_crashreporter0.o] Error 1
[task 2020-01-20T17:00:11.513Z] 17:00:11 INFO - make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/toolkit/crashreporter'
[task 2020-01-20T17:00:11.513Z] 17:00:11 INFO - /builds/worker/workspace/build/src/config/recurse.mk:74: recipe for target 'toolkit/crashreporter/target-objects' failed
[task 2020-01-20T17:00:11.513Z] 17:00:11 ERROR - make[3]: *** [toolkit/crashreporter/target-objects] Error 2
[task 2020-01-20T17:00:11.513Z] 17:00:11 INFO - make[3]: *** Waiting for unfinished jobs....
[task 2020-01-20T17:00:11.513Z] 17:00:11 INFO - make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/toolkit/xre'
[task 2020-01-20T17:00:11.513Z] 17:00:11 INFO - toolkit/xre/nsAppRunner.o
Assignee | ||
Updated•5 years ago
|
Comment 10•5 years ago
|
||
bugherder |
Description
•